"Les cours de neeko.fr"

Retour en haut

Java : les variables et les paramètres

Portée de variables, copie et références.

Variables primitives

int maVar; maVar = 12;

Les fonctions et la portée des variables

Les fonctions doivent être considérées comme des boites noires, indépendantes.

Une fonction peut bien sûr en appeller une autre, voire s'appeller elle même, mais les variables qu'elle manipule sont indépendantes à chacun des appels.

C'est la signature de la fonction qui précise les éventuels parametres et leur type, ainsi que le type de retour.

public static void main(String[] args){ int monAge=19; boolean estMajeur = estMajeurFR(monAge); //boolean estMajeur = estMajeurJP(monAge); } public static boolean estMajeurFR(int age) { int limite = 18; boolean result; if (age >= limite) { result = true; } else { result = false; } return result; } public static boolean estMajeurJP(int age) { int limite = 20; boolean estMajeur; if (age >= limite) { estMajeur = true; } else { estMajeur = false; } return result; }

Les fonctions doivent être considérées comme des boites indépendantes. Chaque boite peut déclarer toutes les variables qu'elle veut, sans se soucier de ses voisines. L'unicité des noms de variable doit être vérifiée dans le cardre d'une boite. On parle de contexte.

A noter que la fonction main est une fonction tout à fait normale, avec des parametres et sans valeur de retour. Sa seule particularité est qu'elle est appellée automatiquement au lancement du programme.

Lorsqu'une fonction est appellée, on ne connait rien d'elle, à part le type des parametres qu'elle attends, s'il y en a, et le type de la valeur qu'elle va nous retourner.

Tout le reste est caché. En particulier le nom du ou des parametres n'a aucune importance ici, ce qui est important c'est la valeur qu'on lui passe et qui lui sera copiée.

Classes et passage par référence

Grace aux classes, Java nous permet de rassembler plusieurs éléments dans un seul pour représenter une entité de notre programme.

Une classe est un ensemble de variables et de méthodes attachées (méthode = fonction attachée à une classe).

class Personnage { public String nom; public int pv; public boolean encoreVivant(){ // return ... } public boolean estPlusFort(Personnage autrePerso){ // return ... } }

Lorsque l'on instancie une classe avec l'operateur new, on crée une instance de l'objet et une référence (ou un pointeur) vers cette instance.

La variable recoit la valeur de cette référence, pas l'instance elle même.

Personnage p1 = new Personnage(); p1.nom = "Gandalf"; p1.pv = 20; Personnage p2 = new Personnage(); p2.nom = "Balrog"; p2.pv = 25;

Plusieurs variables peuvent pointer vers la meme instance.

C'est le cas par exemple lorsqu'on passe en parametre une variable d'instance (= non primitive) à une fonction.

p1.estPlusFort(p2);